<!DOCTYPE html>
<html lang=zh>
<head>
    <meta charset="utf-8">
    
    <title>2-区块链的技术分析：以太坊，Fabric，Corda | johnny技术地</title>
    
    
        <meta name="keywords" content="DLT" />
    
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
    <meta name="description" content="区块链的技术分析：以太坊，Fabric，Corda2020年10月31日 https:&#x2F;&#x2F;zhuanlan.zhihu.com&#x2F;p&#x2F;270586016  企业和监管部门对身份和权限许可有严格的要求，这往往会导致它们多选用许可区块链协议（或者私有链）而不是无许可区块链（又称为公共区块链）协议。 对于许可链，目前三种区块链协议已成为全球范围内各行业的首选：Hyperledger Fabric，企业以太">
<meta property="og:type" content="article">
<meta property="og:title" content="2-区块链的技术分析：以太坊，Fabric，Corda">
<meta property="og:url" content="https://abcd_1101.gitee.io/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/2-%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%EF%BC%9A%E4%BB%A5%E5%A4%AA%E5%9D%8A%EF%BC%8CFabric%EF%BC%8CCorda/index.html">
<meta property="og:site_name" content="johnny技术地">
<meta property="og:description" content="区块链的技术分析：以太坊，Fabric，Corda2020年10月31日 https:&#x2F;&#x2F;zhuanlan.zhihu.com&#x2F;p&#x2F;270586016  企业和监管部门对身份和权限许可有严格的要求，这往往会导致它们多选用许可区块链协议（或者私有链）而不是无许可区块链（又称为公共区块链）协议。 对于许可链，目前三种区块链协议已成为全球范围内各行业的首选：Hyperledger Fabric，企业以太">
<meta property="og:locale">
<meta property="og:image" content="https://gitee.com/abcd_1101/gitee-internal-blog-src/raw/master/source/images/DLT_Choice.png">
<meta property="og:image" content="https://pic1.zhimg.com/80/v2-4589c19d613cf926f60b2e88bdffba3c_720w.webp">
<meta property="og:image" content="https://pic4.zhimg.com/80/v2-7797e32bbfb85c0e52151b565d1e4387_720w.webp">
<meta property="og:image" content="https://pic2.zhimg.com/80/v2-eb5e0e2e02837a44027302981d187ec1_720w.webp">
<meta property="og:image" content="https://pic1.zhimg.com/80/v2-097adf7e1a7781c1f820b54203339230_720w.webp">
<meta property="article:published_time" content="2023-02-04T09:20:59.000Z">
<meta property="article:modified_time" content="2023-04-22T03:36:34.089Z">
<meta property="article:author" content="Johnny">
<meta property="article:tag" content="DLT">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://gitee.com/abcd_1101/gitee-internal-blog-src/raw/master/source/images/DLT_Choice.png">
    

    
        <link rel="alternate" href="/atom.xml" title="johnny技术地" type="application/atom+xml" />
    

    
        <link rel="icon" href="/gitee-internal-blog/favicon.ico" />
    

    
<link rel="stylesheet" href="/gitee-internal-blog/libs/font-awesome/css/font-awesome.min.css">

    
<link rel="stylesheet" href="/gitee-internal-blog/libs/open-sans/styles.css">

    
<link rel="stylesheet" href="/gitee-internal-blog/libs/source-code-pro/styles.css">


    
<link rel="stylesheet" href="/gitee-internal-blog/css/style.css">

    
<script src="/gitee-internal-blog/libs/jquery/2.1.3/jquery.min.js"></script>

    
<script src="/gitee-internal-blog/libs/jquery/plugins/cookie/1.4.1/jquery.cookie.js"></script>

    
    
        
<link rel="stylesheet" href="/gitee-internal-blog/libs/lightgallery/css/lightgallery.min.css">

    
    
        
<link rel="stylesheet" href="/gitee-internal-blog/libs/justified-gallery/justifiedGallery.min.css">

    
    
    
    


    
        <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
    
<meta name="generator" content="Hexo 5.4.0"></head>

<body>
    <div id="container">
        <header id="header">
    <div id="header-main" class="header-inner">
        <div class="outer">
            <a href="/gitee-internal-blog/" id="logo">
                <i class="logo"></i>
                <span class="site-title">johnny技术地</span>
            </a>
            <nav id="main-nav">
                
                    <a class="main-nav-link" href="/gitee-internal-blog/">首页</a>
                
                    <a class="main-nav-link" href="/gitee-internal-blog/archives">归档</a>
                
                    <a class="main-nav-link" href="/gitee-internal-blog/categories">分类</a>
                
                    <a class="main-nav-link" href="/gitee-internal-blog/tags">标签</a>
                
                    <a class="main-nav-link" href="/gitee-internal-blog/about">关于</a>
                
            </nav>
            
            <div id="search-form-wrap">

    <form class="search-form">
        <input type="text" class="ins-search-input search-form-input" placeholder="Search" />
        <button type="submit" class="search-form-submit"></button>
    </form>
    <div class="ins-search">
    <div class="ins-search-mask"></div>
    <div class="ins-search-container">
        <div class="ins-input-wrapper">
            <input type="text" class="ins-search-input" placeholder="Type something..." />
            <span class="ins-close ins-selectable"><i class="fa fa-times-circle"></i></span>
        </div>
        <div class="ins-section-wrapper">
            <div class="ins-section-container"></div>
        </div>
    </div>
</div>
<script>
(function (window) {
    var INSIGHT_CONFIG = {
        TRANSLATION: {
            POSTS: 'Posts',
            PAGES: 'Pages',
            CATEGORIES: 'Categories',
            TAGS: 'Tags',
            UNTITLED: '(Untitled)',
        },
        ROOT_URL: '/gitee-internal-blog/',
        CONTENT_URL: '/gitee-internal-blog/content.json',
    };
    window.INSIGHT_CONFIG = INSIGHT_CONFIG;
})(window);
</script>

<script src="/gitee-internal-blog/js/insight.js"></script>


</div>
        </div>
    </div>
    <div id="main-nav-mobile" class="header-sub header-inner">
        <table class="menu outer">
            <tr>
                
                    <td><a class="main-nav-link" href="/gitee-internal-blog/">首页</a></td>
                
                    <td><a class="main-nav-link" href="/gitee-internal-blog/archives">归档</a></td>
                
                    <td><a class="main-nav-link" href="/gitee-internal-blog/categories">分类</a></td>
                
                    <td><a class="main-nav-link" href="/gitee-internal-blog/tags">标签</a></td>
                
                    <td><a class="main-nav-link" href="/gitee-internal-blog/about">关于</a></td>
                
                <td>
                    
    <div class="search-form">
        <input type="text" class="ins-search-input search-form-input" placeholder="Search" />
    </div>

                </td>
            </tr>
        </table>
    </div>
</header>

        <div class="outer">
            
            
                <aside id="sidebar">
   
        
    <div class="widget-wrap" id='categories'>
        <h3 class="widget-title">
            <span>categories</span>
            &nbsp;
            <a id='allExpand' href="#">
                <i class="fa fa-angle-double-down fa-2x"></i>
            </a>
        </h3>
        
        
        
         <ul class="unstyled" id="tree" > 
                    <li class="directory open">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder-open"></i>
                            &nbsp;
                            DLT
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            Ledger
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            Corda
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2023/03/09/DLT/Ledger/Corda/1-Corda%E4%BE%8B%E5%AD%90/">1-Corda例子</a></li>  <li class="file"><a href="/gitee-internal-blog/2023/03/09/DLT/Ledger/Corda/2-Corda%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">2-Corda数据结构</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            SmartContract
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            DAML
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2023/02/04/DLT/SmartContract/DAML/1-Why%20Daml/">1-Why Daml</a></li>  <li class="file"><a href="/gitee-internal-blog/2023/02/04/DLT/SmartContract/DAML/2-Daml%20sample/">2-Daml sample</a></li>  <li class="file"><a href="/gitee-internal-blog/2023/04/22/DLT/SmartContract/DAML/3-Daml2%20Canton/">3-Daml2 Canton</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory open">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder-open"></i>
                            &nbsp;
                            概念和框架
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/1-%E5%8C%BA%E5%9D%97%E9%93%BE%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80/">1-区块链理论基础</a></li>  <li class="file active"><a href="/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/2-%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%EF%BC%9A%E4%BB%A5%E5%A4%AA%E5%9D%8A%EF%BC%8CFabric%EF%BC%8CCorda/">2-区块链的技术分析：以太坊，Fabric，Corda</a></li>  <li class="file"><a href="/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/3-Blockchain101%20sharing/">3-Blockchain101 sharing</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            IDE
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/03/IDE-eclipse-debug-f5-8/">IDE eclipse debug f5-8</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            docker_k8s
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/19/docker_k8s/springcloud%20vs%20k8s/"></a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/docker_k8s/%E5%AE%B9%E5%99%A8-docker-k8s/">容器-docker-k8s</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            git
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/05/git-reset-and-revert/">git reset and revert</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/14/git-pull-request-to-contribute-other-project/">Pull request to contribute other project</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/18/git-stash%E7%94%A8%E6%B3%95/">git stash用法</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/16/git-tag%E8%AE%B0%E5%BD%95%E7%89%88%E6%9C%AC%E5%AF%B9%E5%BA%94commit/">git tag记录版本对应commit</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            java
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/25/java%E5%9F%BA%E7%A1%801/">java基础1</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            jvm
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            性能监测
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/11/jvisualvm%E5%92%8Csprintboot%20admin%E6%80%A7%E8%83%BD%E7%9B%91%E6%B5%8B/">jvisualvm和sprintboot admin性能监测</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            linux
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            常用命令
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/11/linux%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/">linux常用命令</a></li>  </ul> 
                    </li> 
                     <li class="file"><a href="/gitee-internal-blog/2021/04/18/linux-find%E5%91%BD%E4%BB%A4/">linux-find命令</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            spring
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/01/spring-log%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95/">日志记录</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/03/spring-mvc%E5%BF%85%E5%A4%87%E9%85%8D%E7%BD%AE/">spring mvc必备配置</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/23/spring%E8%84%9A%E6%89%8B%E6%9E%B6%E5%8E%9F%E7%90%86/">spring脚手架原理</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            windows
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/17/windows-dns%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E5%93%8D%E5%BA%94/">windows dns服务器未响应</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            中间件
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            mq
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/2-mq%E9%87%8D%E5%A4%8D%E9%A1%BA%E5%BA%8F%E6%B6%88%E8%B4%B9/">2-mq重复顺序消费</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/1-mq%E5%9F%BA%E7%A1%80/">1-mq基础</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/0-mq-zookeeper%E6%98%AF%E4%BB%80%E4%B9%88/">0-mq-zookeeper是什么</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/3-mq-kafka%E5%85%A5%E9%97%A8/">3-mq-kafka入门</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/4-mq%E9%97%AE%E9%A2%98%E4%B8%8D%E4%B8%A2%E5%A4%B1-%E9%87%8D%E5%A4%8D-%E6%9C%89%E5%BA%8F-%E5%A0%86%E7%A7%AF/">4-mq问题不丢失_重复_有序_堆积</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/05/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/5-mq-kafka-segement%E8%AF%BB%E5%86%99/">5-mq-kafka-segement读写</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/07/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/6-mq-kafka%E4%B8%89%E8%BF%9E%E5%87%BB/">6-mq-kafka三连击</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/12/%E4%B8%AD%E9%97%B4%E4%BB%B6/mq/7-mq-kafka%E6%98%AF%E6%8E%A8%E8%BF%98%E6%98%AF%E6%8B%89/">7-mq-kafka是推还是拉</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            必会框架
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/%E6%A1%86%E6%9E%B6-%E9%AB%98%E6%80%A7%E8%83%BDNIO-Netty/">框架-高性能NIO-Netty</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            操作系统
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-pageCache/">操作系统-pageCache</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-nioFilechannel%E5%A0%86%E5%A4%96directBuffer%E4%B8%8E%E5%A0%86%E5%86%85byteBuffer/">操作系统-nioFilechannel堆外directBuffer与堆内byteBufferbyteBuffer</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%BC%98%E5%8C%96%E6%8F%A1%E6%89%8B%E6%8C%A5%E6%89%8B/">操作系统-计算机网络优化握手挥手</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%B8%B8%E9%97%AE/">操作系统-计算机网络常问</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%8A%93%E5%8C%85/">操作系统-计算机网络抓包</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            数据库
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            mysql
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/0-mysql%E7%BB%93%E6%9E%84%E4%B8%8E%E6%8F%92%E5%85%A5/">0-mysql结构与插入</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/1-mysql%E4%B8%80%E8%87%B4%E6%80%A7%E8%AF%BB-%E4%BA%8B%E5%8A%A1%E5%9B%9E%E6%BB%9A-mvcc/">1-mysql一致性读-事务回滚-mvcc</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/3-mysql-sql%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E5%AE%8F%E8%A7%82%E6%B5%81%E7%A8%8B-redo-undo-bin/">3-mysql-sql执行过程宏观流程-redo-undo-bin</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/5-mysql-sql%E8%B0%83%E4%BC%98%E6%80%9D%E8%B7%AF/">5-mysql-sql调优思路</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/4-mysql-explain%E6%89%A7%E8%A1%8C%E5%85%B7%E4%BD%93%E6%B5%81%E7%A8%8B/">4-mysql-explain执行具体流程</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/6-mysql-%E7%B4%A2%E5%BC%95%E4%BD%9C%E7%94%A8%E5%92%8C%E8%AE%BE%E8%AE%A1/">6-mysql-索引作用和设计</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/8-mysql-%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E8%AE%BE%E5%A4%9A%E5%A4%A7/">8-mysql-数据库连接池设多大</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/9-mysql-%E4%BB%8E%E4%B8%9A%E5%8A%A1%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1-%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/">9-mysql-从业务到数据库设计-软件工程</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/7-mysql-changebuffer-merge/">7-mysql-changebuffer-merge</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/2-mysql-undo-purge_bin_redo-flush%E8%84%8F%E9%A1%B5/">2-mysql-undo-purge_bin_redo-flush脏页</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/10-mysql-mysql8%E6%96%B0%E7%89%B9%E6%80%A7/">10-mysql-mysql8新特性</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/12-mysql-%E5%85%A8%E5%B1%80%E9%94%81-%E8%A1%A8%E9%94%81-%E8%A1%8C%E9%94%81/">12-mysql-全局锁-表锁-行锁</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/11-mysql-%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E5%92%8C%E5%AE%9E%E6%88%98/">11-mysql-主从复制和实战</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/13-mysql-%E6%9E%B6%E6%9E%84%E6%96%B9%E6%A1%88/">13-mysql-架构方案</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            redis
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/8-redis-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E6%93%8D%E4%BD%9C/">8-redis-数据结构和操作</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/11-redis-%E5%8F%AF%E7%94%A8%E6%80%A7-mysql%E4%B8%80%E8%87%B4%E6%80%A7%E9%97%AE%E9%A2%98/">11-redis-可用性-mysql一致性问题</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/1-redis-%E5%A5%BD-%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF/">1-redis-好-使用场景</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/2-redis-%E5%BF%AB-%E5%86%85%E5%AD%98%E8%80%97%E5%B0%BD%E5%90%8E%E4%BC%9A%E6%80%8E%E6%A0%B7/">2-redis-快-内存耗尽后会怎样</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/3-redis-%E5%BF%AB-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E6%93%8D%E4%BD%9C/">3-redis-快-数据结构和操作</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/4-redis-%E5%BF%AB-%E4%B8%BA%E4%BD%95%E5%8F%98%E5%A4%9A%E7%BA%BF%E7%A8%8B/">4-redis-快-为何变多线程</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/7-redis-%E4%BC%98%E5%8C%96-%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/"></a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/8-redis-%E4%BC%98%E5%8C%96-%E9%9B%AA%E5%B4%A9-%E7%A9%BF%E9%80%8F-%E5%87%BB%E7%A9%BF/">8-redis-优化-雪崩-穿透-击穿</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/9-redis-%E5%8F%AF%E7%94%A8%E6%80%A7-%E6%8C%81%E4%B9%85%E5%8C%96/">9-redis-可用性-持久化</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/20-redis-%E9%9D%A2%E8%AF%95%E9%A2%98/">20-redis-面试题</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/5-redis-%E5%BF%AB-%E5%A4%9A%E8%B7%AFio%E5%A4%8D%E7%94%A8/">5-redis-快-多路io复用</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/6-redis-%E4%BC%98%E5%8C%96-%E5%8F%98%E6%85%A2%E4%BA%86%E5%90%97/">6-redis-优化-变慢了吗</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E6%95%B0%E6%8D%AE%E5%BA%93/redis/10-redis-%E5%8F%AF%E7%94%A8%E6%80%A7-%E9%9B%86%E7%BE%A4%E7%AF%87/">10-redis-可用性-集群篇</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            知识点框架
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            19-数据库
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/08/02/19-1-Oracle%E5%B8%B8%E8%80%83/">19-1-Oracle常考</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            2-jvm
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/25/2-1-JVM%E8%84%91%E5%9B%BE/">2-1-JVM脑图</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/25/2-2-JVM%E5%86%85%E5%AD%98%E5%8C%BA%E5%9F%9F/">2-2-JVM内存区域</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/26/2-3-jvm%E8%BF%90%E8%A1%8C%E6%97%B6%E5%86%85%E5%AD%98/">2-3-jvm运行时内存</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/26/2-4-%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6-%E7%AE%97%E6%B3%95-%E9%80%83%E9%80%B8%E5%88%86%E6%9E%90/">2-4-垃圾回收-算法-逃逸分析</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/27/2-5-java%E5%9B%9B%E7%A7%8D%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B/">2-5-java四种引用类型</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/28/2-6-7-gc%E7%AE%97%E6%B3%95%E5%92%8C%E5%9E%83%E5%9C%BE%E6%94%B6%E9%9B%86%E5%99%A8/">2-6-7-gc算法和垃圾收集器</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/28/2-8-java-io-and-nio/">2-8-java io and nio</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/29/2-9-jvm%E7%B1%BB%E5%8A%A0%E8%BD%BD%E6%9C%BA%E5%88%B6/">2-9-jvm类加载机制</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            3-java集合
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/30/3-1-java%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF%E5%85%B3%E7%B3%BB%E4%B8%8E%E5%AE%9E%E7%8E%B0/">3-1-java接口继承关系与实现</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/30/3-2-List/">3-2-List</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/01/3-3-Set/">3-3-Set</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/01/3-4-Map%E6%98%A0%E5%B0%84/">3-4-Map映射</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            4-java多线程
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/07/02/4-1-2-%E5%A4%9A%E7%BA%BF%E7%A8%8B%E8%84%91%E5%9B%BE%E5%92%8C%E5%9B%9B%E7%A7%8D%E7%BA%BF%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%96%B9%E6%B3%95/">4-1-2-多线程脑图和四种线程创建</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/02/4-3-4%E7%A7%8D%E7%BA%BF%E7%A8%8B%E6%B1%A0/">4-3-4种线程池</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/02/4-4-%E7%BA%BF%E7%A8%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F5%E7%A7%8D%E7%8A%B6%E6%80%81/">4-4-线程生命周期5种状态</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/02/4-5-%E7%BB%88%E6%AD%A2%E7%BA%BF%E7%A8%8B4%E6%96%B9%E5%BC%8F/">4-5-终止线程4方式</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/02/4-6-7-sleep%E4%B8%8Ewait-start%E4%B8%8Erun/">4-6-7-sleep与wait-start与run</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/03/4-8-java%E5%90%8E%E5%8F%B0%E7%BA%BF%E7%A8%8B/">4-8-java后台线程</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/03/4-9-java%E9%94%81/">4-9-java锁</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/05/4-10-%E7%BA%BF%E7%A8%8B%E5%9F%BA%E6%9C%AC%E6%96%B9%E6%B3%95/">4-10-线程基本方法</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/06/4-11-%E7%BA%BF%E7%A8%8B%E4%B8%8A%E4%B8%8B%E6%96%87%E5%88%87%E6%8D%A2/">4-11-线程上下文切换</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/06/4-12-%E5%90%8C%E6%AD%A5%E9%94%81%E4%B8%8E%E6%AD%BB%E9%94%81/">4-12-同步锁与死锁</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/06/4-13-%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%8E%9F%E7%90%86/">4-13-线程池原理</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/08/4-14-%E9%98%BB%E5%A1%9E%E9%98%9F%E5%88%97/">4-14-阻塞队列</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/10/4-15-cyclicBarrier-countdownlatch-semaphore/">4-15-cyclicBarrier-countdownlatch-semaphore</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/14/4-16-volatile%E5%85%B3%E9%94%AE%E5%AD%97%E4%BD%9C%E7%94%A8/">4-16-volatile关键字作用</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/14/4-17-%E4%B8%A4%E4%B8%AA%E7%BA%BF%E7%A8%8B%E5%85%B1%E4%BA%AB%E6%95%B0%E6%8D%AE/">4-17-两个线程共享数据</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/16/4-18-ThreadLocal%E4%BD%9C%E7%94%A8/">4-18-ThreadLocal作用</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/16/4-19-synchronized%E5%92%8Creentrantlock%E5%8C%BA%E5%88%AB/">4-19-synchronized和reentrantlock区别</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/17/4-20-ConcurrentHashMap/">4-20-ConcurrentHashMap</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/17/4-21-22-java%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6%E5%92%8C%E7%AE%97%E6%B3%95/">4-21-22-java线程调度和算法</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/17/4-23-cas%E6%AF%94%E8%BE%83%E5%B9%B6%E4%BA%A4%E6%8D%A2/">4-23-cas比较并交换</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/17/4-24-aqs%E6%8A%BD%E8%B1%A1%E7%9A%84%E9%98%9F%E5%88%97%E5%90%8C%E6%AD%A5%E5%99%A8/">4-24-aqs抽象的队列同步器</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            5-java基础
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/07/19/5-1-exception%E5%BC%82%E5%B8%B8%E5%88%86%E7%B1%BB%E5%8F%8A%E5%A4%84%E7%90%86/">5-1-exception异常分类及处理</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/20/5-2-java%E5%8F%8D%E5%B0%84/">5-2-java反射</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/22/5-3-java%E6%B3%A8%E8%A7%A3annotation/">5-3-java注解annotation</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/24/5-4-java%E5%86%85%E9%83%A8%E7%B1%BB/">5-4-java内部类</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/14/5-5-jdk8-lambda/">5-5-jdk8-lambda</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/14/5-6-RxJava/">5-6-RxJava</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/14/5-7-java-Observer%E6%8E%A5%E5%8F%A3%E5%92%8CObservable%E7%B1%BB/">5-7-java-Observer接口和Observable类</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            6-spring
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/03/6-2-springboot%E5%B8%B8%E8%80%83/">6-2-springboot常考</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/31/6-1-spring%E5%B8%B8%E8%80%83/">6-1-spring常考</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/28/6-3-springcloud%E7%94%A8%E8%BF%87%E7%9A%84/">6-3-springcloud用过的</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            面试的项目实现
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            中间件
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            es
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E4%B8%AD%E9%97%B4%E4%BB%B6/es/es/">es</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            微服务
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/08/21/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/%E5%BE%AE%E6%9C%8D%E5%8A%A1/hystrix/"></a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            数据库
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            mysql
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/09/04/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/0-mysql%E7%BB%93%E6%9E%84%E4%B8%8E%E6%8F%92%E5%85%A5/">0-mysql结构与插入</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            自动补全
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/es%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/">es自动补全</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/21/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/redis%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/"></a></li>  </ul> 
                    </li> 
                     <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/IJP%E9%9D%A2%E8%AF%95%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/">IJP面试项目实现</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E7%9A%84%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/Ex%E9%9D%A2%E8%AF%95%E9%A1%B9%E7%9B%AE%E5%AE%9E%E7%8E%B0/">Ex面试项目实现</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            面试题
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E9%A2%98/SpringBoot+Tomcat+Nginx+Netty%E9%9D%A2%E8%AF%95%E9%A2%98/">SpringBoot+Tomcat+Nginx+Netty面试题</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E9%A2%98/%E9%98%BF%E9%87%8C%E9%9D%A2%E8%AF%95%E4%BA%8C/">阿里面试题2</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/06/25/%E9%9D%A2%E8%AF%95%E9%A2%98/%E9%98%BF%E9%87%8C%E9%9D%A2%E8%AF%95%E4%B8%80/">阿里面试题1</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/16/%E9%9D%A2%E8%AF%95%E9%A2%98-java%E5%9F%BA%E7%A1%80%E9%9D%A2%E8%AF%9516%E9%97%AE/">面试题-java基础面试16问</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            项目经历
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            2019
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            xinge_notification
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/05/oracle_explain/">Oracle explain</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            2021
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            房贷项目
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/05/%E9%A1%B9%E7%9B%AE%E4%BB%8E0%E5%88%B01/">项目从0到1</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/12/email-telnet-smtp-health-check/">email telnet smtp health check</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/12/%E5%8E%8B%E6%B5%8B%E5%8F%82%E6%95%B0%E6%8C%87%E6%A0%87/">压测参数指标</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/12/checkmarx%E5%AE%89%E5%85%A8%E6%89%AB%E6%8F%8F/">checkmarx安全扫描</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/25/db-table-annotation/">db table annotation</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/04/25/jdbctemplate-sql-injection/">jdbctemplate sql injection</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            微信开发
                        </a>
                         <ul class="unstyled" id="tree" > 
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            安全
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/16/%E5%AE%89%E5%85%A8-java-ssl%E9%94%99%E8%AF%AF%E8%A7%A3%E5%86%B3%E7%A5%9E%E5%99%A8-net-debug%E5%8F%82%E6%95%B0/">安全-java ssl 错误解决神器 net debug参数</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/28/%E5%AE%89%E5%85%A8-%E5%8A%A0%E5%AF%86%E6%9C%BA/">安全-加密机</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            容器
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/07/28/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E6%9C%8D%E5%8A%A1%E5%99%A8-IBM%20websphere%E7%BB%8F%E9%AA%8C%20-%20%E5%89%AF%E6%9C%AC/">服务器-IBM websphere经验</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/28/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E6%9C%8D%E5%8A%A1%E5%99%A8-Tomcat%E7%BB%8F%E9%AA%8C/">服务器-Tomcat经验</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/07/28/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E6%9C%8D%E5%8A%A1%E5%99%A8-IBM%20websphere%E7%BB%8F%E9%AA%8C/">服务器-IBM websphere经验</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/15/docker_k8s/%E5%AE%B9%E5%99%A8-k8s%E7%BD%91%E9%A1%B5%E5%B8%B8%E8%A7%81%E5%90%8D%E8%AF%8D/">容器-k8s网页常见名词</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/09/06/docker_k8s/%E5%AE%B9%E5%99%A8-Istio/">容器-Istio</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            小程序
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/16/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8FnavigateTo%E4%B8%8EredirectTo%E5%8C%BA%E5%88%AB/">小程序navigateTo与redirectTo区别</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/08/30/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%85%8D%E7%BD%AE/">微信小程序的配置</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            手机抓包
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/04/10/Fiddler%E5%AF%B9%E5%AE%89%E5%8D%93%E7%A7%BB%E5%8A%A8%E7%AB%AF%E7%9A%84%E6%8A%93%E5%8C%85%E6%B5%8B%E8%AF%95/">Fiddler对安卓移动端的抓包测试</a></li>  </ul> 
                    </li> 
                    
                    <li class="directory">
                        <a href="#" data-role="directory">
                            <i class="fa fa-folder"></i>
                            &nbsp;
                            高级群发系统
                        </a>
                         <ul class="unstyled" id="tree" >  <li class="file"><a href="/gitee-internal-blog/2021/05/09/Oracle-clob%E5%AD%97%E6%AE%B5/">Oracle clob字段</a></li>  </ul> 
                    </li> 
                     <li class="file"><a href="/gitee-internal-blog/2021/04/18/%E9%A1%B9%E7%9B%AE%E6%80%A7%E8%83%BD%E5%8F%82%E6%95%B0/">项目性能参数</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/09/%E5%BE%AE%E4%BF%A1%E6%8E%A5%E5%8F%A3%E6%B3%A8%E6%84%8F%E7%82%B9%E6%B1%87%E9%9B%86/">微信接口注意点汇集</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/09/%E5%BE%AE%E4%BF%A1%E4%B8%93%E7%BA%BF%E7%9A%84%E7%BD%91%E7%BB%9C%E5%B1%82%E7%90%86%E8%A7%A3/">专线的网络层理解</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/15/%E5%BE%AE%E4%BF%A1Sprint-plan/">Sprint plan</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/15/%E5%BE%AE%E4%BF%A1%E4%B8%8E%E9%93%B6%E8%81%94%E7%9A%84sso%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95/">微信与银联的sso单点登录</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/22/G3%E8%87%AA%E5%8A%A8%E5%8C%96/">G3自动化</a></li>  <li class="file"><a href="/gitee-internal-blog/2021/05/29/%E5%BE%AE%E4%BF%A1%E9%A1%B9%E7%9B%AE%E5%BE%80ikp%E6%90%AC/">微信项目往ikp搬</a></li>  </ul> 
                    </li> 
                     </ul> 
                    </li> 
                     </ul> 
    </div>
    <script>
        $(document).ready(function() {
            var iconFolderOpenClass  = 'fa-folder-open';
            var iconFolderCloseClass = 'fa-folder';
            var iconAllExpandClass = 'fa-angle-double-down';
            var iconAllPackClass = 'fa-angle-double-up';
            // Handle directory-tree expansion:
            // 左键单独展开目录
            $(document).on('click', '#categories a[data-role="directory"]', function (event) {
                event.preventDefault();

                var icon = $(this).children('.fa');
                var expanded = icon.hasClass(iconFolderOpenClass);
                var subtree = $(this).siblings('ul');
                icon.removeClass(iconFolderOpenClass).removeClass(iconFolderCloseClass);
                if (expanded) {
                    if (typeof subtree != 'undefined') {
                        subtree.slideUp({ duration: 100 });
                    }
                    icon.addClass(iconFolderCloseClass);
                } else {
                    if (typeof subtree != 'undefined') {
                        subtree.slideDown({ duration: 100 });
                    }
                    icon.addClass(iconFolderOpenClass);
                }
            });
            // 右键展开下属所有目录
            $('#categories a[data-role="directory"]').bind("contextmenu", function(event){
                event.preventDefault();
                
                var icon = $(this).children('.fa');
                var expanded = icon.hasClass(iconFolderOpenClass);
                var listNode = $(this).siblings('ul');
                var subtrees = $.merge(listNode.find('li ul'), listNode);
                var icons = $.merge(listNode.find('.fa'), icon);
                icons.removeClass(iconFolderOpenClass).removeClass(iconFolderCloseClass);
                if(expanded) {
                    subtrees.slideUp({ duration: 100 });
                    icons.addClass(iconFolderCloseClass);
                } else {
                    subtrees.slideDown({ duration: 100 });
                    icons.addClass(iconFolderOpenClass);
                }
            })
            // 展开关闭所有目录按钮
            $(document).on('click', '#allExpand', function (event) {
                event.preventDefault();
                
                var icon = $(this).children('.fa');
                var expanded = icon.hasClass(iconAllExpandClass);
                icon.removeClass(iconAllExpandClass).removeClass(iconAllPackClass);
                if(expanded) {
                    $('#sidebar .fa.fa-folder').removeClass('fa-folder').addClass('fa-folder-open')
                    $('#categories li ul').slideDown({ duration: 100 });
                    icon.addClass(iconAllPackClass);
                } else {
                    $('#sidebar .fa.fa-folder-open').removeClass('fa-folder-open').addClass('fa-folder')
                    $('#categories li ul').slideUp({ duration: 100 });
                    icon.addClass(iconAllExpandClass);
                }
            });  
        });
    </script>

    
    <div id="toTop" class="fa fa-angle-up"></div>
</aside>
            
            <section id="main"><article id="post-DLT/概念和框架/2-区块链的技术分析：以太坊，Fabric，Corda" class="article article-type-post" itemscope itemprop="blogPost">
    <div class="article-inner">
        
        
            <header class="article-header">
                
                    <div class="article-meta">
                        
    <div class="article-category">
    	<i class="fa fa-folder"></i>
        <a class="article-category-link" href="/gitee-internal-blog/categories/DLT/">DLT</a><i class="fa fa-angle-right"></i><a class="article-category-link" href="/gitee-internal-blog/categories/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/">概念和框架</a>
    </div>

                        
    <div class="article-tag">
        <i class="fa fa-tag"></i>
        <a class="tag-link-link" href="/gitee-internal-blog/tags/DLT/" rel="tag">DLT</a>
    </div>

                        
    <div class="article-date">
        <i class="fa fa-calendar"></i>
        <a href="/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/2-%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%EF%BC%9A%E4%BB%A5%E5%A4%AA%E5%9D%8A%EF%BC%8CFabric%EF%BC%8CCorda/">
            <time datetime="2023-02-04T09:20:59.000Z" itemprop="datePublished">2023-02-04</time>
        </a>
    </div>


                        
                            <i class="fa fa-bar-chart"></i>
                            <span id="busuanzi_container_site_pv"><span id="busuanzi_value_page_pv"></span></span>    
                        
                        
                            <div class="article-meta-button">
                                <a target="_blank" rel="noopener" href='https://github.com/zthxxx/Wiki-site/raw/writing/source/_posts/DLT/概念和框架/2-区块链的技术分析：以太坊，Fabric，Corda.md'> Source </a>
                            </div>
                            <div class="article-meta-button">
                                <a target="_blank" rel="noopener" href='https://github.com/zthxxx/Wiki-site/edit/writing/source/_posts/DLT/概念和框架/2-区块链的技术分析：以太坊，Fabric，Corda.md'> Edit </a>
                            </div>
                            <div class="article-meta-button">
                                <a target="_blank" rel="noopener" href='https://github.com/zthxxx/Wiki-site/commits/writing/source/_posts/DLT/概念和框架/2-区块链的技术分析：以太坊，Fabric，Corda.md'> History </a>
                            </div>
                        
                    </div>
                
                
    
        <h1 class="article-title" itemprop="name">
            2-区块链的技术分析：以太坊，Fabric，Corda
        </h1>
    

            </header>
        
        
        <div class="article-entry" itemprop="articleBody">
        
        
            
                <div id="toc" class="toc-article">
                <strong class="toc-title">Catalogue</strong>
                    <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%EF%BC%9A%E4%BB%A5%E5%A4%AA%E5%9D%8A%EF%BC%8CFabric%EF%BC%8CCorda"><span class="toc-number">1.</span> <span class="toc-text">区块链的技术分析：以太坊，Fabric，Corda</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E8%80%85%E5%8C%BA%E5%88%AB%EF%BC%88%E9%9C%80%E8%A6%81%E5%9C%A82023%E7%A1%AE%E8%AE%A4%E4%B8%8B%EF%BC%89"><span class="toc-number">1.1.</span> <span class="toc-text">三者区别（需要在2023确认下）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B1%E8%AF%86%E6%A8%A1%E5%9E%8B-%EF%BC%88Consensus-Model%EF%BC%89"><span class="toc-number">1.2.</span> <span class="toc-text">共识模型 （Consensus Model）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%A4%9A%E7%89%88%E6%9C%AC%E5%B9%B6%E5%8F%91%E6%8E%A7%E5%88%B6%EF%BC%88MVCC%EF%BC%89%E5%8F%8A%E5%85%B6%E5%90%AB%E4%B9%89"><span class="toc-number">1.3.</span> <span class="toc-text">多版本并发控制（MVCC）及其含义</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%A4%E6%98%93%E6%A8%A1%E5%9E%8B%EF%BC%88Transaction-Model%EF%BC%89"><span class="toc-number">1.4.</span> <span class="toc-text">交易模型（Transaction Model）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%9A%90%E7%A7%81%E6%94%AF%E6%8C%81%EF%BC%88Privacy-Support%EF%BC%89"><span class="toc-number">1.5.</span> <span class="toc-text">隐私支持（Privacy Support）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E7%AE%A1%E7%90%86%EF%BC%88Smart-Contract-Management%EF%BC%89"><span class="toc-number">1.6.</span> <span class="toc-text">智能合约管理（Smart Contract Management）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%80%9A%E8%AF%81%E6%94%AF%E6%8C%81%EF%BC%88Token-Support-%EF%BC%89"><span class="toc-number">1.7.</span> <span class="toc-text">通证支持（Token Support ）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%90%E8%90%A5%E6%B2%BB%E7%90%86%EF%BC%88Operational-Governance%EF%BC%89"><span class="toc-number">1.8.</span> <span class="toc-text">运营治理（Operational Governance）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93"><span class="toc-number">1.9.</span> <span class="toc-text">总结</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%A6%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0"><span class="toc-number">1.10.</span> <span class="toc-text">另一篇文章</span></a></li></ol></li></ol>
                </div>
            
        
        
            <h1 id="区块链的技术分析：以太坊，Fabric，Corda"><a href="#区块链的技术分析：以太坊，Fabric，Corda" class="headerlink" title="区块链的技术分析：以太坊，Fabric，Corda"></a>区块链的技术分析：以太坊，Fabric，Corda</h1><p>2020年10月31日</p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/270586016">https://zhuanlan.zhihu.com/p/270586016</a></p>
<p><img src="https://gitee.com/abcd_1101/gitee-internal-blog-src/raw/master/source/images/DLT_Choice.png" alt="image-20230311214819114"></p>
<p>企业和监管部门对身份和权限许可有严格的要求，这往往会导致它们多选用许可区块链协议（或者私有链）而不是无许可区块链（又称为公共区块链）协议。</p>
<p>对于许可链，目前三种区块链协议已成为全球范围内各行业的首选：Hyperledger Fabric，企业以太坊（Enterprise Ethereum）和 R3 Corda。 Fabric和企业以太坊都是适用于任何行业的通用协议，而Corda是面向金融行业设计的。每个协议选项都有非常不同的谱系和设计重点，并且这三个协议都已被企业和政府在生产系统中广泛采用。</p>
<h2 id="三者区别（需要在2023确认下）"><a href="#三者区别（需要在2023确认下）" class="headerlink" title="三者区别（需要在2023确认下）"></a>三者区别（需要在2023确认下）</h2><table>
<thead>
<tr>
<th></th>
<th>企业以太坊</th>
<th>Fabric</th>
<th>Corda</th>
</tr>
</thead>
<tbody><tr>
<td>节点许可</td>
<td>基于智能合约的规则，将基于文件的每个节点的规则作本地覆盖（override）</td>
<td>可在节点(node)，通道(channel)和联盟(consortium)级别上配置</td>
<td>可信网络映射服务，由每个节点上基于文件的配置进行补充。Corda网络被划分为由单独的证书颁发机构(Certificate Authorities)管理的兼容区域</td>
</tr>
<tr>
<td>身份</td>
<td>公钥-分布式的，可在以太坊的链之间可互操作。通过证明(proofs)与PKI耦合</td>
<td>基于具有本地组织身份的PKI。在共识和许可中始终使用组织身份，而不是个人身份</td>
<td>基于个人和组织身份的PKI</td>
</tr>
<tr>
<td>加密算法</td>
<td>secp256k1</td>
<td>可插拔 (内置有 secp256r1 和 secp384r1的椭圆算法).</td>
<td>ed25519 secp256r1 secp256k1 RSA (3072bit) PKCS#1 SPHINCS-256 (experimental 试验阶段)</td>
</tr>
<tr>
<td>交易共识</td>
<td>排序(Order)-&gt;执行(Execute)/验证(Validate)</td>
<td>执行-&gt;排序-&gt;验证</td>
<td>执行/验证-&gt;排序/公证(Notarize)</td>
</tr>
<tr>
<td>应用的责任</td>
<td>将签名的交易发送到网络中的一个节点</td>
<td>直接与所有其他参与者协调以获得背书(endorsment)，管理状态、签名和提交的最优并发锁定(optimistic concurrency locking)</td>
<td>直接与所有其他参与者协调以获得背书(endorsment)，管理状态、签名和提交的最优并发锁定(optimistic concurrency locking)</td>
</tr>
<tr>
<td>共识算法</td>
<td>Proof-of-Authority 权威证明 (BFT). Raft (CFT with trusted leader，有可信领导). Istanbul BFT (BFT with deterministic leader rotation 有确定性领导轮换). Tendermint</td>
<td>Kafka/Zab (CFT with trusted leader 有可信领导). Raft (CFT with trusted leader有可信领导)</td>
<td>Raft (CFT with trusted leader有可信领导) BFT</td>
</tr>
<tr>
<td>智能合约引擎</td>
<td>EVM, 进程内沙盒(in-process sandbox)</td>
<td>容器隔离(Docker isolation)</td>
<td>确定性JVM(Deterministic JVM)</td>
</tr>
<tr>
<td>智能合约语言</td>
<td>DSL (Solidity, Serpent), 保证确定性</td>
<td>多语言 (Go, Node.js, Java), 可容忍的非确定性</td>
<td>Java, Kotlin, 通过推荐的库来实现确定性</td>
</tr>
<tr>
<td>智能合约生命周期</td>
<td>不可篡改，部署容易，链上储存</td>
<td>需要细致的过程(elaborate process)来部署/更改。链下存储</td>
<td>需要节点级管理操作才能部署/更新。链下存储。 正在进行的工作是将共识关键代码与非共识关键代码拆分为不同的存储策略（分别在链上和链下）</td>
</tr>
<tr>
<td>智能合约升级</td>
<td>通过编程模式来扩展/迁移代码和数据</td>
<td>通过管理程序和升级交易来替换链下代码</td>
<td>具有基于哈希约束的合同通过节点级管理程序和协调流程进行显式升级和授权。只要根据约束条件和哈希匹配项进行签名，具有签名约束条件的合同就会自动允许执行新版本</td>
</tr>
<tr>
<td>资产数字化/通证化</td>
<td>原生带有多标准功能: ERC20/ERC721/ERC777 etc.</td>
<td>无原生通证，定制化方案</td>
<td>定制化方案，通过Corda通证SDK更容易实现</td>
</tr>
<tr>
<td>多链</td>
<td>每个链都是唯一的，并且需要单独的节点运行时（最少或3或4个，取决于共识）</td>
<td>具有共享对等runtime和共享顺序器的本机功能（通道）。用于创建具有隔离状态的侧链的内置治理</td>
<td>没有链的概念（共享账本）。交易始终明确地针对特定节点。状态的范围仅限于指定的公证节点，可以将其重新定向到其他公证</td>
</tr>
<tr>
<td>私有交易</td>
<td>公共哈希代表输入</td>
<td>公共哈希代表输入和私有结束状态</td>
<td>继承的所有交易都是私有的。所有的交易对对验证公正节点</td>
</tr>
<tr>
<td>社区贡献者（至2019年10月）</td>
<td>Go-Ethereum: 429 Quorum: 383 Besu: 60 Autonity: 360</td>
<td>Fabric: 185</td>
<td>Corda: 146</td>
</tr>
<tr>
<td>社区活跃度(Month of Nov. 2019)</td>
<td>Go-Ethereum: 15 authors, 98 PRs Quorum: 9 authors, 13 PRs Besu: 23 authors, 66 PRs Autonity: 6 authors, 6 PRs</td>
<td>Fabric: 31 authors, 220 PRs</td>
<td>Corda: 33 authors, 91 PRs</td>
</tr>
</tbody></table>
<p>与J2EE标准驱动的Java企业社区成长的方式类似，<strong>企业以太坊联盟（EEA）</strong>也遵循标准驱动的方法。这种方法促进了互操作，同时允许多个创新者根据企业要求的开发独立的解决方案。在企业场景中，有四个主要的<strong>企业以太坊</strong>的实现。其中三个是从公共以太坊客户端修改而来的，第四个是从头独立开发的。所有实现都与正式的以太坊规范（也称为“黄皮书”）兼容，并且都具有独特的扩展，例如零知识证明和模块化体系结构。我所知的有hyperledger besu。另外一个quorum也出名。</p>
<p>Hyperledger社区是一个伞形组织，它还包括其他代码库，例如英特尔主导的的Sawtooth，Soramitsu的Iroha，Evernym的Indy, 以及Monax的Burrow和ConsenSys PegaSys的Besu两个以太坊的实现。它还包括了众多解决其他各种问题的工具项目，如跨链互操作、运维、开发工具链和加密模块。</p>
<p><strong>Corda</strong>最初是R3内部的一个闭源项目，R3是一个由金融公司投资的联盟，致力于为金融业开发DLT（分布式账本技术）。它后来在<a href="https://link.zhihu.com/?target=http://github.com">http://github.com</a>上开源，但没有像Linux 基金会或以太坊基金会（Ethereum Foundation）这样的非营利性管理机构。而是由R3的员工管理，Corda架构设计在很大程度上受到金融业隐私和合规要求的影响。它的关键技术包括使用UTXO（Unspent Transaction Output）交易模型，所有仅涉及交易对手的交易，以及只涉及交易对手的所有交易，使其具有特有继承的隐私保护（尽管验证公证服务节点仍然可以看到完整的交易细节）。</p>
<h2 id="共识模型-（Consensus-Model）"><a href="#共识模型-（Consensus-Model）" class="headerlink" title="共识模型 （Consensus Model）"></a><strong>共识模型 （Consensus Model）</strong></h2><p>所有区块链系统都需要一种共识机制，以确保所有节点对输入的交易和排序具有一致的看法。几乎所有现有的协议都使用围绕“排序和执行”架构设计的共识算法。首先，所有节点在一个区块内就交易顺序达成一致，然后由每个节点独立执行交易以计算结果状态。</p>
<p><img src="https://pic1.zhimg.com/80/v2-4589c19d613cf926f60b2e88bdffba3c_720w.webp" alt="img"></p>
<p>Image Source: Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains</p>
<p><strong>以太坊</strong>也是建立在这样一种共识模型之上的。 “排序和执行（order-and-exeute）” 模型的关键部分是每个交易的执行必须是确定的（deterministic），这意味着在相同的输入和相同的逻辑下，它产生的结果是相同的。同时，以太坊的智能合约引擎以太坊虚拟机（EVM）为开发人员提供了完整的逻辑编程功能，也就是图灵完备。这两个看似相反的目标是通过去除非确定性语言功能（例如文件系统，网络IO，时钟，浮点运算等）来实现的，其结果是一种新的专用语言Solidity。</p>
<p><strong>Fabric</strong>采取了一种完全不同的方法，即在其共识模型中容忍而不是消除不确定性。从一开始，Fabric就一直坚持为智能合约提供完整语言的设计原则。在撰写本文时，Fabric Chaincode可以用三种完整的语言运行时（runtime）编写：Golang、Node.js和Java。当然将编程语言的全部功能赋予chaincode开发者不可避免地会带来错误编码导致的不确定性风险。Fabric采用了独特的“执行-排序-验证（execute-order-validate）”的共识设计，因此区块链系统可以承受非确定性Chaincode造成的不良交易，同时开发者继续完善逻辑和实现。</p>
<p><img src="https://pic4.zhimg.com/80/v2-7797e32bbfb85c0e52151b565d1e4387_720w.webp" alt="img"></p>
<p>Image Source: Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains</p>
<p>从整体上看，必须有一定数量的组织就执行结果达成共识，其中“背书策略（endorsement policy）”是定义在chaincode、私有数据收集（从2.0版开始）或密钥这些级别上的。设计的详细信息可以参考Hyperledger Fabric的综合文档以获取全部详细信息。</p>
<p><strong>Corda</strong>共识设计与Fabric非常相似。首先，参与交易的节点通过执行目标合约并签署执行结果来协调它们之间的交易处理。一旦收集到所需的签名，发起方节点负责将交易发送到公证服务（Notary Service）以进行共识签名。公证服务会保存所有已提交交易的完整历史记录，并能够确定是否出现双花的情况。公证服务批准交易并在提议的结果上签字后，交易将由各方最终确定和认可。这与Fabric遵循的执行排序验证设计相同。</p>
<table>
<thead>
<tr>
<th></th>
<th>交易执行</th>
<th>排序（Order）- 双花验证</th>
</tr>
</thead>
<tbody><tr>
<td>以太坊</td>
<td>以太节点(所有节点)</td>
<td>以太节点(block proposer)</td>
</tr>
<tr>
<td>Fabric</td>
<td>背书节点（Endorsing Peer）</td>
<td>排序节点（Orderer</td>
</tr>
<tr>
<td>Corda</td>
<td>Corda节点</td>
<td>公证节点（Notary）</td>
</tr>
</tbody></table>
<h2 id="多版本并发控制（MVCC）及其含义"><a href="#多版本并发控制（MVCC）及其含义" class="headerlink" title="多版本并发控制（MVCC）及其含义"></a><strong>多版本并发控制（MVCC）及其含义</strong></h2><p>值得指出的是，“先执行，后排序（execute first and order next）”的设计意味着需要某种并发版本控制，否则当多个交易试图并行修改同一状态值时，后一个交易将覆盖前一个，并消除前一个交易的状态转移，而不是建立在先前交易的结果上。<strong>Fabric</strong>借鉴了数据库设计中的多版本并发控制（MVCC）技术。chaincode引擎跟踪在执行智能合约时正被查看（处于读取状态/Readset）和正在被更新（处于写入状态readset）的状态值。在验证阶段，验证在区块中的包含的每个交易和转移状态，如果一个交易在其readset中的状态值版本与当前版本不符，通常是因为它们已被区块中的较早交易更新，该交易已被标记为无效。</p>
<p>这不是一个简单的问题，它意味着，如果一系列交易需要修改相同的状态值，则必须对它们进行监管，使单个区块内不超过一个交易。否则，由于并发修改，应用程序将观察到大量无效交易。在Fabric社区中，我们发现应用程序开发人员在这一点上存在相当严重的认知障碍。</p>
<p>目前有一些技术手段可以绕过这一限制进行开发，例如利用复合密钥为每个事务组合唯一密钥，同时能够将针对同一基础状态变量的密钥组合在一起的方法。Fabric的高吞吐（<strong>high-throughput）</strong>案例应用程序演示了如何做到这一点。但是请注意，并非所有情况都可以利用此技术。</p>
<p>即使Corda建立在相同的“先执行后排序”设计原则上，其基于UTXO的模型从本质上保证了每个输入都是唯一的。如果任何两个交易尝试使用相同的输入，则会检测到双花的情况，并且排较后的交易将被拒绝，因为较早的交易已经使用了该输入。</p>
<hr>
<h2 id="交易模型（Transaction-Model）"><a href="#交易模型（Transaction-Model）" class="headerlink" title="交易模型（Transaction Model）"></a><strong>交易模型（Transaction Model）</strong></h2><p><strong>以太坊</strong>发明了“账户状态（Account State）”交易模型，<strong>Fabric</strong>也采用了这种交易模型。智能合约维护一个作用域为该智能合约的世界状态（world state），并且每个交易都可以更新或查询最新值。</p>
<p>但是，在以太坊和Fabric之间的状态管理有着重要的区别。每个以太坊智能合约在部署后由网络提供一个帐户，并能以以太币或代币形式持有余额。以太坊智能合约的行为非常类似于带有私钥的用户帐户（又称为“外部拥有的帐户”），不同之处在于智能合约不持有私钥，所以很明显它无法签署交易。但是，当一个智能合约调用另一个智能合约时，该调用会假定调用智能合约的身份，这使得下游的合约可以像使用外部帐户一样执行访问控制。</p>
<p>这种设计在需要“利益中立（interest-neutral）”或“去中心化（decentralized）”第三方进行多步骤业务交易的情况下非常有用。这样的第三方通常称为“托管人（escrow）”。由于上述属特性，以太坊智能合约可以很容易地作为被信任的托管。</p>
<p>另一方面，称为“ Chaincodes”的<strong>Fabric</strong>智能合约完全则完全没有身份概念。一个chaincode也可以调用另一个chaincode，但是作为在整个调用链中提交交易的交易签名者，交易标识始终保持不变。因此，在Fabric网络上，添加托管帐户（escrow account）也需要添加外部方。因此，负责托管的外部帐户必须证向其他参与者证明其中立性。</p>
<p><img src="https://pic2.zhimg.com/80/v2-eb5e0e2e02837a44027302981d187ec1_720w.webp" alt="img"></p>
<p><strong>Corda</strong>交易的工作方式非常不同。首先，它们基于UTXO而不是帐户状态模型。从理论上讲，这应该使其对并发处理更加友好，因为每个交易都应该使用唯一的输入。对于可替代资产（现金，债券等），这应该与预期一样有效，这些可替代资产可以轻松拆分成多个部分，以便可每个部分都可在并行处理的单独交易中使用。但是对于无法拆分的不可替代资产，任何一次更新只能执行一次交易。如果有不止一笔交易试图修改相同的不可替代资产，则该交易将构成双花，随后的交易将按照公证处的指示被拒绝。。</p>
<p>此外，几乎所有Corda交易都是收集多个签名以实现完全授权状态转移。以太坊或Fabric的多方签名授权方案要么需要应用程序协调来收集签名，或者从不同的签名者处提交多个交易。另一方面，Corda交易是原生建立在签名收集和协调的概念之上，使用“流（flow）”。</p>
<p><img src="https://pic1.zhimg.com/80/v2-097adf7e1a7781c1f820b54203339230_720w.webp" alt="img"></p>
<p>Image Source: Corda Key Concept - Flows</p>
<hr>
<h2 id="隐私支持（Privacy-Support）"><a href="#隐私支持（Privacy-Support）" class="headerlink" title="隐私支持（Privacy Support）"></a><strong>隐私支持（Privacy Support）</strong></h2><p><strong>企业以太坊</strong>（如Quorum和Besu）和<strong>Fabric</strong>都通过私有交易来支持隐私，在私有交易中，交易仅发送到节点的子集（Subset of Nodes），而对其余节点保持隐藏。它们都基于相似的设计，通过使用直接的点对点（P2P）通信来分发私有有效负载（Private Payloads），并使用哈希在公共分类帐中记录交易的证明。有关设计的详细信息，可参考<strong>Quorum github</strong>和<strong>Fabric文档</strong>。</p>
<p>他们有一些细微但重要的差异。</p>
<p><strong>Quorum</strong>和<strong>Besu</strong>总是从客户端应用程序接收私有交易的节点上对私有有效负载加密，然后再将其发送到指定参与交易的其他节点。这是通过首先生成一个一次性的对称加密密钥，然后使用目标节点的公钥对其进行加密来实现的。另一方面，Fabric可以让客户端应用程序决定是否应该对“临时数据字段（transient data field）”中的私有数据进行加密。如果已加密，则客户端应用程序负责将解密密钥分发给背书的节点（endorsing peers）。</p>
<p>哈希也代表了不同的内容。在<strong>Quorum</strong>和<strong>Besu</strong>中，由于执行是在稍后完成的，因此哈希只能表示加密了的输入。这意味着如果节点在执行后不同意所得到的私有状态，则无法法发现这一点。</p>
<p>在<strong>Fabric</strong>中，私有状态是在背书阶段由执行私有交易的节点（peers）来计算的，所以私有状态由哈希值和输入一起表示。因此，在共识之后所有节点上的哈希一致保证了私有交易的参与节点总是在私有状态上达成一致。</p>
<p>Fabric还通过“通道（Channels）”的概念提供了完全的数据隔离，这是另一种隐私技术。这一点不要与以太坊中的状态通道（State Channel）相混淆。可以将Fabric的通道（channels）视为独立的区块链，因为每个通道都维护其完全独立的账本实例，该实例在该通道的参与节点之间共享。在1.2版中引入私有数据收集（private data collection）之前，通道是在Fabric上实现隐私的唯一方法。如果一个联盟主要关注双边交易，就像大多数金融工具一样通道的数量就会变得相当大：O（N ^ 2），其中N是联盟的参与者数量。</p>
<p>Corda完全基于所有交易都是“私有”的理念设计的。换句话说，交易仅发送给特定真实景中涉及的特定交易对手。另一方面，必须有一个中立的第三方见证交易已正确进行，尤其是相对于彼此的顺序，并且没有双花。这就是公证服务（Notary Service）的角色。为了使公证服务履行其职能，他们必须维护有关资产交易的完整历史记录，并能够了解受审查的每笔交易的内容。</p>
<p>上述的公证服务（Notary Service）称为验证公证（Validating Notary）。它本质上是所有交易中的交易对手，对交易详细信息非常了解。 Corda还出于隐私目的支持非验证公证人（Non-validating Notary）。非验证公证人仅检查双花，而不验证交易输入本身。交易详细信息（如签名者身份）对非验证公证人是不可见的。这使Corda提供了与Quorum（以及支持相同私有交易设计的Hyperledger Besu）和Fabric类似的隐私支持 - 私有交易的哈希与共识服务共享。</p>
<hr>
<h2 id="智能合约管理（Smart-Contract-Management）"><a href="#智能合约管理（Smart-Contract-Management）" class="headerlink" title="智能合约管理（Smart Contract Management）"></a><strong>智能合约管理（Smart Contract Management）</strong></h2><p><strong>以太坊</strong>的智能合约是不可篡改的，合约部署后无法升级。这是专门设计的，因为在公共区块链中，使用ICO进行公共投资后不应该允许更改合同背后的。<br>Upgrading a smart contract in Ethereum requires one of two approaches:<br>升级以太坊中的智能合约可以采用以下两种方法之一：</p>
<ul>
<li>通过代理合同（<strong>Proxy Contract</strong>）升级 - 在编写原始合同代码时要考虑到迁移。这样，所有逻辑和状态都可以升级，而无需更改接口或地址。</li>
<li>合同迁移（Contract Migration）- 部署新合同，为其分配新地址，并从旧版本复制现有状态。</li>
</ul>
<p>两者都有完善的文档介绍，并通过社区中的代码库和示例进行了实践。</p>
<p>以太坊还允许任何人部署智能合约。这也可以归因于以太坊的公共区块链血统特性，它通过鼓励开放参与来实现去中心化的运营模式。</p>
<p>以太坊合约代码可以重复使用。同一合约代码的每次部署都会产生不同的实例并分配不同的地址。</p>
<p><strong>Fabric</strong>用截然不同的哲学来管理Chaincode。部署Chaincode分为两个步骤。与以太坊不同，由于Chaincode的可执行二进制文件实际上并不存在于账本中，因此必须首先将其安装在每个支持它的背书节点（Endorsing Peers）上。接下来，Chaincode定义包括名称、版本、背书策略，私人数据集等参数，由组织通过其签名来批准（背书）并提交给通道（channels）。提交交易必须包括足够多的背书签名，在通道建立时满足根据预定的规则的阈值。</p>
<p>Fabric的chaincode是可升级的。他们被分配了名称和版本。升级时，将分配一个新版本，并且自动继承所有现有状态。</p>
<p>Fabric的chaincode也可以重复使用。用任何chaincode语言（Go，node.js，Java）编写的同一chaincode，可以以不同的名称进行安装和实例化。</p>
<p><strong>Corda</strong>的智能合约是加载到JVM中执行的Java类。将Corda合约编译，打包为jar文件并签名，然后将其安装在每个对手方的节点上。通过所包含的状态对象，Corda交易始终通过指定的哈希指向已安装的合约，以确保处理的一致性。</p>
<p>与Fabric一样，Corda合约支持原生的版本控制和升级，在升级流程和策略阈值（policy threshold）方面具有更大的灵活性。升级仅具有哈希约束的合约需要特殊的流程（flow），该流程收集对手方的授权以附加不同的合约哈希，然后将状态对象迁移到新版本。具有签名约束的合约的升级要容易得多，因为发起方只需要在交易中附加指向新版本的哈希值，然后根据签名策略（signature）正确地对新版本进行了签名，它将用于处理交易。</p>
<p>Corda的合约通过其完全限定的类名和包含JAR的哈希值进行引用。通过使不同的状态对象通过类名和哈希引用相同的合约来实现代码重用。</p>
<hr>
<h2 id="通证支持（Token-Support-）"><a href="#通证支持（Token-Support-）" class="headerlink" title="通证支持（Token Support ）"></a><strong>通证支持（Token Support ）</strong></h2><p>数字资产通证化（Digital Asset Tokenization）是企业区块链领域最近的流行趋势。实际上，“令牌（Token）”一词不再仅仅是与基于公有链的加密货币和ICO（初始代币发行）相关的概念。由于其定义明确且易于理解的属性和生命周期，通证使多参与方之间管理和交换数字资产变得更加容易。最近发布的有关使用通证设计的大型区块链项目，如JPM Coin和World Wire，都证明了该架构的合法可用性。</p>
<p>通证（token）及其在许可区块链（permissioned blockchain）中的使用是可以单独再写一篇文章了。这里将仅介绍整体概念，并比较两种协议中对其的支持。</p>
<p>这里面最基本的概念是可替代性（fungibility）。可以将其大致解释为“可交换（being exchangeable）”。货币是可替代的资产（fungible asset）类别，因为所有美元纸币的价值都一样，并且你不需要拥有任何特定的美元来获得价值。另一方面，房地产是不可替代的资产（non-fungible asset）类别，因为每所房屋都是独一无二的。即使设计完全相同，位置的差异也会极大地影响房屋的价值。</p>
<p>通证的典型功能包括：</p>
<ul>
<li>所有权：谁拥有特定通证（不可替代/non-fungible）或拥有多少通证（fungible）。</li>
<li>转移：允许交易数字资产。</li>
<li>铸造：用于创建新通证以进行流通。</li>
<li>销毁：允许所有者“销毁（burn）”通证。常用于跨链交易。由于通证无法跨链转移，因此通证会在发送者的链中被销毁，并在接收者的链中铸造。</li>
<li>托管：所有者可以批准特定账户，以管理其代币的一部分。在涉及托管的情况下，代币所有者可以批准托管账户作为保管人（custodian）。</li>
</ul>
<p>通证的简单性也使得使用如，<strong>零知识证明</strong>（zero-knowledge proofs）和<strong>同态哈希</strong>（homomorphic hashes）这样的高级密码技术来增强隐私变得更加容易。</p>
<p>理论上任何支持智能合约的区块链协议都可以使用通证。归根结底，通证是可以拥有和转让的一串数字。因此<strong>以太坊</strong>，<strong>Fabric</strong>和<strong>Corda</strong>可以实现基于通证的的解决方案。以太坊社区已经做了很多工作来发展通证合同设计，以支持各种用例场景，从可替代的，不可替代的到部分可替代的通证规范和标准。以太坊现有丰富的token合约集合，涵盖了广泛的现实世界需求。</p>
<p><strong>以太坊</strong>在通证方面具有一些独特的优势。如上面“交易模型”部分所述，智能合约本身可以充当相互信任的托管人（escrow），这使得使用以太坊实现通证交易必须由可信的第三方代理的用例变得更加简单。现实中，大多数去中心化交换服务都基于此特性。它在流行技术中也至关重要，例如基于<strong>哈希时间锁定合约</strong>（Hashed Timelock Contracts）的<strong>原子交换</strong>（Atomic Swaps），这是一种经过验证的技术，可以在来自同一区块链或跨不同区块链的不同通证合约之间进行通证交易。</p>
<p>另一个优势是，以太坊社区中大量不同类型的通证的真实部署。从稳定币（stable coins）到加密猫（CryptoKitties），企业和消费者都已经在以太坊上使用通证很长时间了，从而形成了强大的技术基础和丰富的技术信息。像<strong>OpenZeppelin</strong>这样的高质量智能合约库使开发人员入门变得轻而易举。</p>
<p><strong>Corda</strong>最初是附带内置资产类型的，类似通证的模型，例如现金和其他类型的资产。后来将它们拆分为一个更通用的工具，称为通证SDK。</p>
<hr>
<h2 id="运营治理（Operational-Governance）"><a href="#运营治理（Operational-Governance）" class="headerlink" title="运营治理（Operational Governance）"></a><strong>运营治理（Operational Governance）</strong></h2><p>治理（governance）是协议运行时的过程和策略，可确保联盟成员适当参与决策过程。</p>
<p><strong>企业以太坊</strong>客户端来自于世界上最著名的去中心化区块链，它必须叠加一个许可层。企业以太坊联盟已在标准规范的3.0版本中进行了全链的许可配置和实施。各种客户端已经实现了每个节点的权限许可规则以及基于智能合约的治理流程。 Quorum最近发布了一个完整的许可和治理框架的beta版。</p>
<p><strong>Fabric</strong>在其架构内的每一层都内置了许可管理（permissioning governance）。创建一个新的联盟、添加或移除成员、定义新通道、从通道添加和移除参与者等操作都需要从相关组织收集批准签名。总体策略模型在整个系统中强制执行。</p>
<p>Fabric具有两个级别的许可和治理支持：联盟（consortium）和通道（channel）。排序（orderers）在联盟层级上管理策略和配置。每个Fabric区块链网络都从定义组织和联盟的创世区块配置中的排序者引导程序开始。节点（peers）在通道层级上管理策略和配置。修改配置，例如向联盟或通道添加新的成员组织，需要根据修改策略（modification policy）收集签名：现有成ANY，ALL或MAJORITY的现有成员。</p>
<p>Fabric治理设计的一个常被抱怨的是它的中心化。这源于以下事实：在1.4版之前，排序（orderers）仅支持中心化的排序引擎：SOLO（无容错的单节点排序者，仅适用于开发模式）和Kafka（具有崩溃容错共识的中心化队列）。结果是排序者的实际部署只能由单个组织来操作。</p>
<p>事实上，Fabric架构是允许分布式排序（orderer）的实现。确实，随着版本1.4中基于Raft的排序（orderer）实现的引入，不再需要将排序者节点与中心化排序引擎配对。每个排序者节点本身都是Raft节点（peer），并且在当前领导者崩溃或无法连接时可以参加领导者选举。这允许更去中心化的部署，其中不止一个组织可以操作排序节点，并参与共识和提议区块链。</p>
<p><strong>Corda</strong>的许可和治理与Fabric非常相似。为了使Corda节点可以与现有节点进行通信，它必须出示由可信的证书颁发机构（trusted Certificate Authority）签名的签名证书。可信网络映射服务用作授权证书的权威来源。添加一个新节点需要一个与它需要通信的节点所使用的网络地图服务相协调的管理过程。但在Fabric中，必须在参与特定通道的每个节点上建立许可，以便可以进行Gossip这样的点对点通信。而Corda节点只能按照CorDapp流（flow）的指导下相互通信。因此，只需要在属于同一CorDapp的节点之间设置许可权限即可。此外，还必须在节点和为由CorDapp管理的资产指定的公证服务（notary service）之间设置许可。</p>
<hr>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a><strong>总结</strong></h2><p>如本文开头所述，<strong>企业以太坊</strong>、<strong>Hyperledger Fabric</strong>和<strong>Corda</strong>均都已被主要行业领导者、政府和创新型初创公司采用。这三个协议都已被验证，可以为运行真实业务的交易的生产系统提供支持。上面引用的大多数差异在于设计选择，和实现时间上的差距。目前区块链技术仍处于活跃的增长阶段，这使是一个非常令人兴奋的时刻。当下，只选择一个协议可能不是一个最佳策略，企业组织很有可能在其各个项目中使用两个或三个协议。由于他们都享有活跃的开发人员和用户社区，这是保证技术长期生存的最重要因素，因此都不会出错。</p>
<p>需要特别指出的是，区块链协议层不过是完整的企业联盟解决方案的基础。还需要考虑许多其他问题，包括部署基础结构（云，内部部署或混合），治理结构（中心化治理、完全民主或介于两者之间方案）、隐私、资产管理模型和身份等等。</p>
<h2 id="另一篇文章"><a href="#另一篇文章" class="headerlink" title="另一篇文章"></a>另一篇文章</h2><p><a target="_blank" rel="noopener" href="https://www.jdon.com/50213.html">https://www.jdon.com/50213.html</a></p>
<p><strong>peer端参与者</strong><br>对于传统的中央数据库系统如oracle或nosql，只有单个实体（所有者）保留底层数据库的副本，例如分类帐。因此，该实体控制哪些数据被贡献以及允许哪些其他实体贡献。随着DLT的出现，这种根本改变将有利于分布式数据存储，其中多个实体持有底层数据库的副本并且自然允许贡献。</p>
<p>参与分布式数据存储的所有实体形成所谓的节点或对等体peer的网络。由于分布式数据存储，难以确保所有节点就共同事实达成一致，例如分类账的正确性，因为一个节点所做的改变必须传播到网络中的所有其他对等节点。达到共同事实的结果称为节点之间的一致性，将在下面描述。</p>
<p>关于参与共识，有两种操作模式：无权限和许可。如果参与是无权限的，则允许任何人参与网络。这种模式适用于以太坊作为公共区块链。另一方面，如果允许参与，则提前选择参与者，并且仅限于这些参与者对网络的访问。Fabric和Corda也是如此。参与模式，无权限或许可，对达成共识有着深远的影响。</p>
<p><strong>共识</strong></p>
<p>\1. 以太坊所有参与者必须就所有已发生的交易(banq注:交易即是事务，英文都是transaction)的顺序达成共识，而不管参与者是否参与了特定交易。交易的事务顺序对于分类账的一致状态至关重要。</p>
<p>如果无法建立明确的事务顺序，则可能会发生双倍花费，即两个平行交易将相同的硬币转移给不同的收件人，从而凭空赚钱。</p>
<p>由于网络可能涉及相互不信任和匿名的当事方，因此必须采用共识机制来保护分类账，防止欺诈或不利的参与者尝试双重支出。</p>
<p>在以太坊的当前实现中，该机制是通过基于工作量证明（PoW）方案的挖掘来建立的。所有参与者必须就共同分类帐达成一致，并且所有参与者都可以访问所有记录的条目。后果是PoW影响了事务处理的性能。</p>
<p>关于存储在分类账上的数据，即使记录是匿名的，但所有参与者都可以访问它们，这对于需要更高程度隐私的应用程序来说是个问题。</p>
<p>与以太坊相比，Fabric和Corda对共识的解释更加精细，并不仅仅归结为基于PoW或其衍生物的挖掘。由于在权限模式下运行，Fabric和Corda为记录提供了更细粒度的访问控制，从而增强了隐私。此外，由于参与交易的各方必须达成共识，因此可以获得业绩增长。</p>
<p>2.Fabric对共识的理解是广泛的，包括整个事务流程，从提议事务到网络，再到将其提交到分类账。此外，节点在达成共识的过程中承担不同的角色和任务。这与以太坊形成对比，其中参与达成共识的节点的角色和任务是相同的。</p>
<p>在Fabric中，节点根据它们是客户端，对等端还是排序者而区分。客户端代表最终用户做的事情，创建又调用交易事务。他们与peer端和排序者沟通。</p>
<p>对等方peer维护分类帐并从排序方接收有序地更新消息，以便将新交易事务提交到分类帐。</p>
<p>代言人排序者是一种特殊类型的peer端，他们的任务是通过检查交易是否满足必要和充分条件（例如提供所需签名）来支持交易。</p>
<p>排序者向客户和同行提供通信渠道，通过该渠道可以广播包含交易的消息。特别是就共识而言，通道确保所有连接的对等体以完全相同的逻辑顺序传递完全相同的消息。(保证顺序是排序者主要职责)</p>
<p>此时，出现的问题是，当采用许多相互不信任的排序者时，在传递消息时可能会出现错误。因此，必须使用一致性算法以应对达成共识时出现故障，或者例如消息出现不一致顺序，这样保证分布式分类账复制时对故障的容忍。</p>
<p>使用Fabric，所采用的算法是“可插拔的”，这意味着根据应用程序的具体要求，可以使用各种算法。例如，为了处理如上所述的随机或恶意复制错误，可以使用拜占庭容错（BFT）算法的变体。</p>
<p>此外，通道划分消息流，这意味着客户端只能看到它们所连接的通道的消息和关联交易事务，并且不知道其他通道的交易事务。</p>
<p>在事务流的上下文中描述了上述节点的角色：客户端向连接的代言人发送事务以启动分类帐的更新。所有代言人都必须就拟议的交易达成一致，因此必须就拟议的分类账更新达成某种共识。客户就会先后收集到所有代言人的批准。</p>
<p>已批准的交易发送给已连接的排序者，并再次达成共识。随后，交易被转发给持有分类账的peer端以进行进一步交易。</p>
<p>在不进一步详细说明的情况下，很明显Fabric允许对共识进行细粒度控制并限制对交易事务的访问，从而提高性能可伸缩性和隐私性。</p>
<p>3.与Fabric类似，Corda的共识也是通过仅涉及各方的事务级别达成的。达成共识是交易有效性和交易唯一性。</p>
<p>通过检查所有必需的签名并确保所引用的任何交易也是有效的，通过运行与交易相关联的智能合约代码（下面详细描述的智能合约）来确保有效性。</p>
<p>唯一性涉及交易事务的输入状态。具体而言，必须确保所讨论的交易是其所有输入状态的唯一消费者。换句话说，不存在消耗任何相同状态的其他事务。这样做的原因是为了避免双倍花费。参与者称为公证人节点，其唯一性达成共识，而采用的算法与Fabric一样“可插拔”。因此，可以再次使用BFT算法。</p>
<p><strong>智能合约</strong><br>“智能合约”一词在第一次遇到时会引起相当大的误解，因为它会唤起某种代表智能行事的合同的想法。然而，合同的性质仍然含糊不清，但直观地看起来与法律问题有关。也就是说，合同既不是智能的，也不是人工智能驱动的，至少现在还不是，它们通常也不会编码具有法律约束力的义务和权利。</p>
<p>Clark及其同事提供了一个有用的术语，突出了“智能合约”一词常用的两种不同方式。第一个是智能合约代码，第二个是智能合法代码，两个区别，在这种比较的背景下被证明是有益的。</p>
<p>智能合约代码仅表示以编程语言编写的软件。它充当使用它的一方的软件代理或代表，其目的是履行某些义务，行使权利并可以以自动方式控制分布式分类账中的资产。因此，它通过执行在现实世界中建模或模拟合同逻辑的代码来承担分布式分类账世界中的任务和职责，尽管其法律理由可能不清楚。</p>
<p>所有DLT都具有智能合约代码意义上的智能合约，可以用Go或Java for Fabric 编写，Solidity 中用于以太坊，Java或Kotlin用于Corda 。</p>
<p>在Fabric中，术语“chaincode”用作智能合约的同义词。作为说明性示例，提醒读者在Corda的共识机制中使用智能合约代码以确保交易有效性。然而，一方面Fabric和以太坊之间存在显着差异，而Corda另一方面与使用“智能合约”术语的第二种方式相关。</p>
<p>在Corda，智能合约不仅包括代码，还允许包含法律文。因此，上述智能法律合同是法律文，其制定方式可以用智能合同代码表达和实施。这背后的基本原理是赋予代码合法性，这种合法性源于相关的法律文。这种结构称为Ricardian Contract 。此时，Corda明确地被设计为应对金融服务行业高度监管的环境。Fabric和Ethereum都缺少此功能。</p>
<p><strong>内置货币</strong><br>另一个值得注意的区别是，以太坊具有内置加密货币（Ether）。它用于向有助于通过挖掘区块达成共识以及支付交易费用的节点支付奖励。因此，可以为以太坊建立分散的应用程序（DApps），允许货币交易。此外，可以通过部署符合预定义标准的智能合约来创建用于自定义用例的数字令牌。这样，可以定义自己的货币或资产。</p>
<p>Fabric和Corda不需要内置加密货币，因为通过挖掘无法达成共识。但是，使用Fabric，可以使用链码开发本机货币或数字令牌。使用Corda，无意创建数字货币或代币。</p>
<p><strong>总结：定制与通用平台</strong><br>总而言之，这三种DLT跨越一个连续体。一方面是Fabric和以太坊，他们都非常灵活，但在不同方面。</p>
<p><strong>以太坊强大的智能合约引擎使其成为任何类型应用程序的通用平台。然而，以太坊的无权限操作模式及其完全透明性是以牺牲性能可<a target="_blank" rel="noopener" href="https://www.jdon.com/tag-2513/">扩展性</a>和隐私为代价的。</strong></p>
<p>Fabric通过允许的操作模式，特别是通过使用BFT算法和细粒度访问控制来解决性能可伸缩性和隐私问题。此外，模块化架构允许Fabric针对多种应用进行定制。可以绘制一个多功能工具箱的类比。</p>
<p><strong>Corda位于另一端。它被有意识地设计为金融服务行业的DLT。最值得注意的是，它通过增加具有法律文的智能合约来考虑高度监管的环境。</strong></p>
<p>显然，与Fabric相比，Corda专注于金融服务交易简化了其架构设计。因此，它可能提供更开箱即用的体验。然而，由于其模块化，Fabric可能可以定制为类似Corda的功能集。寻求将Corda集成到Hyperledger项目中的努力已经存在。<strong>Corda因此不能被视为Fabric的竞争对手，而是更多的补充。</strong></p>
<p>虽然以太坊很好用，但作为银行，因为gas费的不明确，感觉最后不能直接对接ethereum，只能call coinbase的接口来上以太坊？</p>

            </div>
        
        <footer class="article-footer">
        </footer>
    </div>
</article>


    
<nav id="article-nav">
    
        <a href="/gitee-internal-blog/2023/02/04/DLT/%E6%A6%82%E5%BF%B5%E5%92%8C%E6%A1%86%E6%9E%B6/1-%E5%8C%BA%E5%9D%97%E9%93%BE%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80/" id="article-nav-newer" class="article-nav-link-wrap">
            <strong class="article-nav-caption">Newer</strong>
            <div class="article-nav-title">
                
                    1-区块链理论基础
                
            </div>
        </a>
    
    
        <a href="/gitee-internal-blog/2023/02/04/DLT/SmartContract/DAML/1-Why%20Daml/" id="article-nav-older" class="article-nav-link-wrap">
            <strong class="article-nav-caption">Older</strong>
            <div class="article-nav-title">1-Why Daml</div>
        </a>
    
</nav>





    
    




<!-- baidu url auto push script -->
<script type="text/javascript">
    !function(){var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi,r=window.location.href,o=document.referrer;if(!e.test(r)){var n="//api.share.baidu.com/s.gif";o?(n+="?r="+encodeURIComponent(document.referrer),r&&(n+="&l="+r)):r&&(n+="?l="+r);var t=new Image;t.src=n}}(window);
</script>     
</section>
        </div>
        <footer id="footer">
    <div class="outer">
        <div id="footer-info" class="inner">
            Johnny &copy; 2023 
            <a rel="license noopener" target="_blank" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/80x15.png" /></a>
            <br> Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>. Theme - <a target="_blank" rel="noopener" href="https://github.com/zthxxx/hexo-theme-Wikitten">wikitten</a>
            
                <br>
                <span id="busuanzi_container_site_pv"><i class="fa fa-eye"></i> <span id="busuanzi_value_site_pv"></span></span>
                &nbsp;|&nbsp;
                <span id="busuanzi_container_site_pv"><i class="fa fa-user"></i> <span id="busuanzi_value_site_uv"></span></span>
            
        </div>
    </div>
</footer>

        

    
        
<script src="/gitee-internal-blog/libs/lightgallery/js/lightgallery.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-thumbnail.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-pager.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-autoplay.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-fullscreen.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-zoom.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-hash.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-share.min.js"></script>

        
<script src="/gitee-internal-blog/libs/lightgallery/js/lg-video.min.js"></script>

    
    
        
<script src="/gitee-internal-blog/libs/justified-gallery/jquery.justifiedGallery.min.js"></script>

    
    
        <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true,
            TeX: {
                equationNumbers: {
                  autoNumber: 'AMS'
                }
            }
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<script async src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    



<!-- Custom Scripts -->

<script src="/gitee-internal-blog/js/main.js"></script>


    </div>
</body>
</html>